1. Technical Field
This invention relates generally to data processing systems and, more particularly, it relates to a system and method for connecting and sharing input and output between a first assistive technology application running in an operating system and a second assistive technology application environment running in the same operating system.
2. Description of the Related Art
A typical data processing system comprises a host processing unit having an operating system native to it which supports the creation of a large number of virtual machines, each of which is assigned, on request, to an end user. A virtual machine processes tasks for the assigned end user, by time sharing the host processor hardware of the host system. Some host systems may include more than one hardware processor so that true simultaneously processing occurs at the host since a plurality of processors are running in parallel. More often, there is merely one hardware processor that concurrently runs data processing tasks for the virtual machines by a time sharing technique. This technique is transparent to the end users at their user terminals.
The creation of a virtual machine on a host requires the use of interfaces between input and output devices available to the host for the user to communicate with the virtual machine. If the virtual machine is running a non-native software, that is a different operating system from the host, there is great difficulty in connecting to the virtual machine. There may be requirements on the virtual machine which are not provided for on the host which will necessitate additional hardware devices for input or output of the application running in a virtual machine on the host. An example would be for assistive technology devices for handicap users such as screen readers or Braille output devices.
A typical example is the use of java applications on a java virtual machine (JVM) environment. Accessibility bridges have been proposed to provide notification in the java virtual machine environment for calls to be placed through a java native invocation mechanism to an accessibility bridge to provide state data and other event information to the host. The process is plagued with problems created by garbage collection in the JVM where needed state data can be lost. Additionally, a management system where large amounts of data can be captured and carried and transferred back and forth between the virtual machine and the host would require tremendous amounts of memory for the data processed. The processing of large amounts of data is extremely slow and would limit the use of application programs from gaining access to other programs running on the host. Additionally, application and environment data that is not specified by the accessibility bridge would not be available to the host assistive technology.
Similarly, it is desirable that a separate application running natively on the host operating system may use the input/output objects connected to the host input/output manager.
What is needed is a system and method to allow otherwise independent applications running on a host and on a virtual machine resident in the host or as a separate application on the host to seamlessly cooperate with one another.
It is, therefore, an object of the invention to provide a means to allow the cooperation of an application running on a virtual machine or as a separate application to make use of input/output objects connected to the host assistive technology input/output manager.
It is another object of the invention to minimize the coding needed to allow cooperation between applications running on a virtual machine or as a separate application to use the input/output manager of the host assistive technology system.
These and other objects features and advantages are accomplished by a data processing system which allows the host system""s devices to generate input to an application running in the virtual machine and allow the virtual machine""s assistive technology application to send its output to the host""s output devices. A system for providing input and output between a first assistive technology application running natively in an operating system and a second assistive technology application running on a virtual machine or as a separate application in the operating system is provided. An input/output manager in the first application manages inputs to and outputs from the second application. An input object in the second application receives input from the input object of the first application. An output object in the second application directs outputs to the output object of the first application. A communications channel between the input/output manager and the input and output methods passes input and output objects to connect the host""s input and output to the virtual machine""s input and output running in the host system.
The advantage is that each application can provide specialized and unique information about its particular environment without having to restrict itself to the common aspects of both environments. A further advantage is that the user is presented with a seamless interface between the two environments.